package cuiyt.juc.unsafe;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

/**
 * @author cyt
 * @create 2020-05-01 15:06
 */
// 测试 list 的线程不安全
public class TestList {
    // Exception in thread "6" java.util.ConcurrentModificationException
    public static void main(String[] args) {
        List<Integer> list;
        list = new ArrayList<Integer>();
        //  list = new Vector<>();
        /**
         * 解决方案
         * 1、调用集合工具包 Collections.synchronizedList();
         * 2、使用 vector
         * 3、new CopyOnWriteArrayList<Integer>();
         */
        List<Integer> integerList = Collections.synchronizedList(list);
        // list = new CopyOnWriteArrayList<Integer>();
        //
        for (Integer i = 0; i < 30; i++) {
            Integer temp = i;
            new Thread(() -> {
                list.add(temp);
                System.out.println(list);
            }, String.valueOf(i)).start();
        }
    }
}
